/**
 * 服务器请求的执行器
 */
#pragma once

// #include "EventRaw.h"
#include "DataManager.h"
#include "ExecuteQueue.h"
#include "ExecuteType.h"
#include "NetworkObject.h"
#include "ResponseType.h"

/* 服务器执行核心 */
typedef struct _EventExecuter EventExecuter;
#define EVENT_EXECUTER(any) ((EventExecuter *)any)

/**
 * 创建一个服务器执行对象
 */
extern EventExecuter *event_executer_new(void);

/**
 * 连接到数据管理器
 */
extern void event_executer_connect_data_manager(EventExecuter *self,
						DataManager   *data_manager);
/**
 * 连接到网络对象
 */
extern void event_executer_connect_network_object(EventExecuter *self,
						  NetworkObject *net_obj);

/**
 * @brief 运行一个 ExecuteQueue 节点
 */
extern void event_executer_run_node(EventExecuter *self, ExecuteQueue *q_node);
